<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>http://javascript.ruanyifeng.com/stdlib/json.html</title>
</head>
<body>
复合类型的值只能是数组或对象，不能是函数、正则表达式对象、日期对象。
<br>
简单类型的值只有四种：字符串、数值（必须以十进制表示）、布尔值和null（不能使用NaN, Infinity, -Infinity和undefined）。
<br>

字符串必须使用双引号表示，不能使用单引号。
<br>

对象的键名必须放在双引号里面。
<br>

数组或对象最后一个成员的后面，不能加逗号。
<script>
    //    JSON.stringify方法用于将一个值转为字符串。该字符串符合 JSON 格式，并且可以被JSON.parse方法还原。
    var stu = {
        name: 'zing',
        age: 20,
        other: null
    };

    var str = JSON.stringify(stu);
    console.log(str);

    var p = JSON.parse(str);
    console.log(p);

    var arr = [1, '1', 'a', str, [], function () {

    }, undefined];
    str = JSON.stringify(arr);
    console.log(str);

    console.log(JSON.parse(str));

    var obj = {
        'prop1': 'value1',
        'prop2': 'value2',
        'prop3': 'value3'
    };

    var selectedProperties = ['prop1', 'prop2', 'prop3'];

    console.log(JSON.stringify(obj, selectedProperties));
    // "{"prop1":"value1","prop2":"value2"}"

    console.log(JSON.stringify({a: 'a', b: 'b'}, ['a', 'b']));
    console.log(JSON.stringify({a: 1, b: 2}, function (key, value) {
        console.log(key+"--"+value);
        if (typeof value === "number") {
            value = 2 * value;
        }
        return value;
    }));


    console.log(JSON.stringify({ p1:1, p2:2 }, null, '|-'));

    var user = {
        firstName: '三',
        lastName: '张',

        get fullName(){
            return this.lastName + this.firstName;
        },
        set fuck(name){
            this.firstName = name
        },
        setFuck:function (name) {
            this.firstName = name;
        },
        toJSON: function () {
            return {
                firstName: this.firstName,
                lastName: this.lastName
            };
        }
    };
    user.fuck = "fuck";
    console.log(user.fullName);
    user.setFuck('fuckname');
    console.log(user.fullName);
    console.log(JSON.stringify(user));



    var date = new Date('2015-01-01');
    console.log(date.toJSON()); // "2015-01-01T00:00:00.000Z"
    console.log(JSON.stringify(date) );// ""2015-01-01T00:00:00.000Z""




</script>
</body>
</html>